package mx.com.switz.controller;

import java.util.List;
import mx.com.switz.dto.Empresa;
import mx.com.switz.service.EmpresaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import mx.com.switz.utils.mail.MailMail;

@Controller
@RequestMapping("empresa/")
public class EmpresaController {

    @Autowired
    private EmpresaService empresaService;
    @Autowired
    private MailMail mailMail;

    @RequestMapping("empresa")
    public String goEmpresa() {
        return "empresa/empresa";
    }

    @RequestMapping("insertemp")
    public String insertEmpresa(@RequestParam("nombre") String nombre, @RequestParam("email") String email, @RequestParam("statusPago") String statusPago, @RequestParam("contrasena") String contrasena) {

        String asunto = "Bienvenido a eCommerce";

        String mensaje = "  Hola  " + nombre + "  Bienvenido a eCommerce "
                + "     "
                + "tu Alias es: " + email + " "
                + ""
                + "y tu Password es: " + contrasena + "";
        mailMail.sendMail(email, asunto,
                mensaje);

        Empresa a = new Empresa();
        a.setNombre(nombre);
        a.setEmail(email);
        a.setStatusPago(statusPago);
        a.setContrasena(contrasena);
        empresaService.insertEmpresa(a);
        return "empresa/mostrar";
    }

    //borrado
    @RequestMapping("borrar")
    public String goBorra() {
        return "empresa/Delete";
    }

    /*
     * @RequestMapping(value = "delete", method = RequestMethod.POST) public
     * String eliminaEmpresa(@RequestParam("clave") int clave) { Empresa a = new
     * Empresa(); a.setClave(clave); empresaService.eliminaEmpresa(a); return
     * "empresa/Delete";
    }
     */
    @RequestMapping("delete")
    public String eliminaEmpresa(@RequestParam("clave") int clave) {
        Empresa a = new Empresa();
        a.setClave(clave);
        empresaService.eliminaEmpresa(a);
        //System.out.println("clave"+clave);
        return "clave" + clave;
    }
    //actualiza

    @RequestMapping("modifica")
    public String goModifica() {
        return "empresa/buscaEmpresaModificar";
    }

    @RequestMapping("update")
    public String updateEmpresa(@RequestParam("clave") int clave, @RequestParam("nombre") String nombre, @RequestParam("email") String email, @RequestParam("statusPago") String statusPago, @RequestParam("contrasena") String contrasena) {
        Empresa a = new Empresa();
        a.setClave(clave);
        a.setNombre(nombre);
        a.setEmail(email);
        a.setStatusPago(statusPago);
        a.setContrasena(contrasena);
        empresaService.actualizaEmpresa(a);
        return "empresa/buscaEmpresaModificar";
    }

    //Lista empresas por nombre
    @RequestMapping("buscar")
    public String goBuscar() {
        return "empresa/buscaEmpresaNombre";
    }
    
    @RequestMapping("login")
    public String goLogin() {
        return "empresa/loginEmpresa";
    }

    @RequestMapping("listar")
    public ModelAndView buscaEmpresa(@RequestParam("nombref") String nombre) {
        Empresa a = new Empresa();
        a.setNombre(nombre);
        empresaService.findEmpresaByNombre(a);
        return new ModelAndView("empresa/listarEmpresas", "empresas", empresaService.findEmpresaByNombre(a));
    }
    //busca empresa por nombre y lo manda a formulario de JSP datosEmpresa

    @RequestMapping("listar2")
    public ModelAndView busca2Empresa(@RequestParam("nombref") String nombre) {
        Empresa a = new Empresa();
        // a.setNombre(clave);
        a.setNombre(nombre);
        //a.setDetalles(apePAterno);
        empresaService.findEmpresaByNombre(a);
        return new ModelAndView("empresa/datosEmpresa", "empresas", empresaService.findEmpresaByNombre(a));
    }

    @RequestMapping(value = "login", method = RequestMethod.POST)
    public String validar(@RequestParam("mail") String mail, @RequestParam("contrasena") String password) {

        Empresa empresa = new Empresa();
        empresa.setEmail(mail);
        empresa.setContrasena(password);

        if (empresaService.login(empresa)) {

            return "bien";
        }
        return "empresa/empresa";
    }

    //Manda a llamar directamente el JSP desplegarEmpresas. 
    //Muestra todos los empresas
    @RequestMapping("mostrar")
    public @ResponseBody
    List muestraEmpresa() {
        return empresaService.listarEmpresas();
        // return new ModelAndView("empresa/desplegarEmpresas", "empresas", empresaService.listarEmpresas());
    }
}
